package org.dromara.common.sms.config;

import org.dromara.common.sms.core.dao.PlusSmsDao;
import org.dromara.common.sms.handler.SmsExceptionHandler;
import org.dromara.sms4j.api.dao.SmsDao;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：短信配置类
 */
@AutoConfiguration(after = {RedisAutoConfiguration.class})
public class SmsAutoConfiguration {

    /**
     * 定义一个主要的SMS Dao Bean
     * 本方法被@Primary和@Bean注解修饰，指示Spring框架在自动装配时优先选择此Bean
     * /选择PlusSmsDao实现是为了利用其中扩展的功能，这为系统提供了更丰富的短信处理能力
     */
    @Primary
    @Bean
    public SmsDao smsDao() {
        return new PlusSmsDao();
    }

    /**
     * 异常处理器
     * 配置SMS异常处理器
     * 通过@Bean注解指示此方法返回的异常处理器将被注入到Spring容器中
     * 此处理器专门用于捕获和处理SMS操作相关的异常
     *
     * @return SmsExceptionHandler 返回一个初始化好的SmsExceptionHandler实例
     */
    @Bean
    public SmsExceptionHandler smsExceptionHandler() {
        return new SmsExceptionHandler();
    }

}
